/*************************************************************************
	> File Name: big_int.cpp
	> Author: yufangze
	> Mail: 2224590123@qq.com
	> Created Time: 2024-12-11 09:55:48
 ************************************************************************/
#include <iostream>
#include <vector>
using namespace std;

class BigInt : public vector<int> {
public:
    BigInt() {push_back(0);}
    BigInt(int x) {
        push_back(x);
        proccess_digit();
    }

    BigInt &operator+=(const BigInt &a) {
        while (size() < a.size()) push_back(0);
        for (int i = 0; i < a.size(); i++) {
            at(i) += a[i];
        }
        proccess_digit();
        return *this;
    }
    
    BigInt operator+(const BigInt &a) {
        BigInt ret(*this);
        ret += a;
        return ret;
    }

    BigInt &operator*=(const BigInt &x) {
        BigInt ret;
        int len = size() + x.size() + 1;
        for (int i = 0; i < len; i++) ret.push_back(0);
        for (int i = 0; i < size(); i++) {
            for (int j = 0; j < x.size(); j++) {
                ret[i + j] += at(i) * x[j];
            }
        }
        *this = ret;
        proccess_digit();
        return *this;
    }

    BigInt operator*(const BigInt &x) {
        BigInt ret(*this);
        ret *= x;
        return ret;
    }
    
    BigInt &operator-=(const BigInt &x) {
        for (int i = 0; i < x.size(); i++) {
            at(i) -= x[i];
        }
        proccess_borrow();
        return *this;
    }
    
    BigInt operator-(const BigInt &x) {
        BigInt ret(*this);
        ret -= x;
        return ret;
    }
    
    BigInt &operator/=(int x) {
        BigInt ret;
        for (int i = 0; i < size(); i++) ret.push_back(0);
        int temp = 0;
        for (int i = size() - 1; i >= 0; i--) {
            temp = temp * 10 + at(i);
            if (temp < x) continue;
            ret[i] = temp / x;
            temp %= x;
        }
        *this = ret;
        deal_zero();
        return *this;
    }

    BigInt operator/(int x) {
        BigInt ret(*this);
        ret /= x;
        return ret;
    }

private:
    void proccess_digit() {
        for (int i = 0; i < size(); i++) {
            if (at(i) < 10) continue;
            if (i + 1 == size()) push_back(0);
            at(i + 1) += at(i) / 10;
            at(i) %= 10;
        }
        deal_zero();
        return ;
    }

    void deal_zero() {
        while (size() > 1 && back() == 0) pop_back();
    }
    
    void proccess_borrow() {
        for (int i = 0; i < size(); i++) {
            if (at(i) >= 0) continue;
            at(i + 1) -= 1;
            at(i) += 10;
        }
        deal_zero();
        return ;
    }


};

istream &operator>>(istream &in, BigInt &a) {
    string str;
    cin >> str;
    a.clear();
    for (int i = str.size() - 1; i >= 0; i--) {
        a.push_back(str[i] - '0');
    }
    return in; 
}

ostream &operator<<(ostream &out, const BigInt &a) {
    for (int i = a.size() - 1; i >= 0; i--) {
        out << a[i];
    }
    return out;
}

int main() {
    BigInt a, b;
    cin >> a >> b;
    cout << a << " + " << b << " = " << a + b << endl;
    cout << a << " - " << b << " = " << a - b << endl;
    cout << a << " * " << b << " = " << a * b << endl;
    cout << a << " / " << 2 << " = " << a / 2 << endl;
    cout << a << " * " << 2 << " = " << a * 2 << endl;
    cout << a << " + " << 2 << " = " << a + 2 << endl;
    cout << a << " - " << 2 << " = " << a - 2 << endl;
    return 0;
}
